Various levels of storage sub-systems are available in the real storage market. For example, there are multiple RAID controllers that provide for data reliability. Accessing storage devices (e.g., disks, solid-state drives, etc.) behind sub-system controllers is more difficult than a directly attached storage device. Additionally, access to storage devices behind the sub-system controllers may be further complicated since each sub-system provider may use a proprietary access mechanism. Software developers building an application to interface with a storage system including one or more storage sub-systems (e.g., multiple RAID controllers from various providers) typically have to understand the proprietary interface for each sub-system and write code to interface with each sub-system separately. Thus, there is a need for a single library to access storage devices, which may be behind various sub-system controllers or directly attached to the storage system, seamlessly.